#pragma once

#include <engine.core/Logger.hpp>

#include "AudioDevice.hpp"




class FMODDevice : public AudioDevice
{
private:

	LoggerPtr            m_logger;

	FMOD::EventSystem*   m_eventsystem;

	AudioAdapter         m_currentAdapter;
	AudioAdapters        m_adapterList;
	//std::vector<IAudioProject*> m_projectList;

	bool                 m_networking;

public:

	FMODDevice(const EngineInfo &info);
	~FMODDevice();

	/**
	 * Reports the API's name.
	 */
	QString apiName() const;

	void update();

	static AudioAdapters queryAdapters();

	AudioAdapters adapters() const;

	/* This soundsystem works like this:
	Load a project file that contains alot of
	events (instances of sounds) that are grouped
	in event groups. Although the Eventsystem grants
	the ability to load all projects into the system,
	we will use a project class to keep things clean.
	*/

	/*IAudioProject *loadProject(const std::string &fname);
	void release(IAudioProject *pProject);*/
};
///////////////////////////////////////////////////////////////////////////////////////////////////
